package com.win.config;

import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;

@Configuration
public class ErrorPageConfig {

    /**
    * 这是一个定制器接口，用于定制Web服务器的配置。通过实现这个接口，你可以修改内嵌Web服务器（如Tomcat、Jetty等）的一些属性，比如设置端口、上下文路径、SSL配置等。
    * 所以，只有在JAR 包 启动时有效。
    */
    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
        return (factory -> {
            // 无需项目上下文 war包名， 重定向地址 /**/error 也要被权限验证忽略
            ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/view/index.html");
            factory.addErrorPages(errorPage404);
        });
    }

    /**
    * 这是一个注册器接口，用于注册错误页面。通过实现这个接口，你可以定义当特定HTTP错误发生时，应该显示哪个错误页面。
    * jar war 都适用
    */
    @Bean
    public  ErrorPageRegistrar  errorPageRegistrar() {
        return (ErrorPageRegistry registry)-> {
            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
            registry.addErrorPages(error404Page);
        },
    }


}
